home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / arch / x86 / include / asm / uv / bios.h next >
Encoding:
C/C++ Source or Header  |  2008-12-24  |  2.6 KB  |  95 lines

  1. #ifndef _ASM_X86_UV_BIOS_H
  2. #define _ASM_X86_UV_BIOS_H
  3.  
  4. /*
  5.  * UV BIOS layer definitions.
  6.  *
  7.  *  This program is free software; you can redistribute it and/or modify
  8.  *  it under the terms of the GNU General Public License as published by
  9.  *  the Free Software Foundation; either version 2 of the License, or
  10.  *  (at your option) any later version.
  11.  *
  12.  *  This program is distributed in the hope that it will be useful,
  13.  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  14.  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  15.  *  GNU General Public License for more details.
  16.  *
  17.  *  You should have received a copy of the GNU General Public License
  18.  *  along with this program; if not, write to the Free Software
  19.  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
  20.  *
  21.  *  Copyright (c) 2008 Silicon Graphics, Inc.  All Rights Reserved.
  22.  *  Copyright (c) Russ Anderson
  23.  */
  24.  
  25. #include <linux/rtc.h>
  26.  
  27. /*
  28.  * Values for the BIOS calls.  It is passed as the first * argument in the
  29.  * BIOS call.  Passing any other value in the first argument will result
  30.  * in a BIOS_STATUS_UNIMPLEMENTED return status.
  31.  */
  32. enum uv_bios_cmd {
  33.     UV_BIOS_COMMON,
  34.     UV_BIOS_GET_SN_INFO,
  35.     UV_BIOS_FREQ_BASE
  36. };
  37.  
  38. /*
  39.  * Status values returned from a BIOS call.
  40.  */
  41. enum {
  42.     BIOS_STATUS_SUCCESS        =  0,
  43.     BIOS_STATUS_UNIMPLEMENTED    = -ENOSYS,
  44.     BIOS_STATUS_EINVAL        = -EINVAL,
  45.     BIOS_STATUS_UNAVAIL        = -EBUSY
  46. };
  47.  
  48. /*
  49.  * The UV system table describes specific firmware
  50.  * capabilities available to the Linux kernel at runtime.
  51.  */
  52. struct uv_systab {
  53.     char signature[4];    /* must be "UVST" */
  54.     u32 revision;        /* distinguish different firmware revs */
  55.     u64 function;        /* BIOS runtime callback function ptr */
  56. };
  57.  
  58. enum {
  59.     BIOS_FREQ_BASE_PLATFORM = 0,
  60.     BIOS_FREQ_BASE_INTERVAL_TIMER = 1,
  61.     BIOS_FREQ_BASE_REALTIME_CLOCK = 2
  62. };
  63.  
  64. union partition_info_u {
  65.     u64    val;
  66.     struct {
  67.         u64    hub_version    :  8,
  68.             partition_id    : 16,
  69.             coherence_id    : 16,
  70.             region_size    : 24;
  71.     };
  72. };
  73.  
  74. /*
  75.  * bios calls have 6 parameters
  76.  */
  77. extern s64 uv_bios_call(enum uv_bios_cmd, u64, u64, u64, u64, u64);
  78. extern s64 uv_bios_call_irqsave(enum uv_bios_cmd, u64, u64, u64, u64, u64);
  79. extern s64 uv_bios_call_reentrant(enum uv_bios_cmd, u64, u64, u64, u64, u64);
  80.  
  81. extern s64 uv_bios_get_sn_info(int, int *, long *, long *, long *);
  82. extern s64 uv_bios_freq_base(u64, u64 *);
  83.  
  84. extern void uv_bios_init(void);
  85.  
  86. extern int uv_type;
  87. extern long sn_partition_id;
  88. extern long uv_coherency_id;
  89. extern long uv_region_size;
  90. #define partition_coherence_id()    (uv_coherency_id)
  91.  
  92. extern struct kobject *sgi_uv_kobj;    /* /sys/firmware/sgi_uv */
  93.  
  94. #endif /* _ASM_X86_UV_BIOS_H */
  95.